import ejs from 'ejs';   // 也可以使用 commonjs语法  const ejs = require('ejs');
import fs from 'fs';
import marked from 'marked';
import browserSync from 'browser-sync'

// 实现以服务打开html并且自动刷新，热更新
let browser;
const server = () => {             // 创建一个服务
    browser = browserSync.create();
    browser.init({
        server: './',
        port: 3000,
        open: true         // 自动打开浏览器
    })
}

// const init = () => {
const init = (callback) => {   // 加一个回调函数，可以自定义操作，是否每次文件更新都启动一个服务
    // 读取markdown文件内容
    const md = fs.readFileSync('README.md', 'utf-8');
    // 读取内容的第二个参数的key要跟模板中的变量名一致
    ejs.renderFile('template.ejs', { content: marked.parse(md), title: 'markdown to html' }, (err, data) => {
        if(err) 
            throw err;
        fs.writeFileSync('index.html', data); // 否则就写html文件
        // server()
        callback && callback()
    })
}

// 监听md文件变化，实现热更新
fs.watchFile('README.md', (curr, prev) => {
    if(curr.mtime !== prev.mtime) {
        init(() => {
            browser.reload()  // 每次文件变动刷新就行
        })
    }
})

init(() => server())